package com.orangelife.service.propFeeDirectBill;

import java.util.List;
import java.util.Map;

import com.orangelife.exception.AppBizException;
import com.orangelife.service.propFeeDirectBill.model.PropFeeDirectBillDto;

/*****************************************************************
 * Copyright(C) ORANGELIFE Corporation 2015. All Rights Reserved.
 *****************************************************************/
/*
 * ============================================================== 功能名
 * PropFeeDirectBill类的 service层的增删改查
 * 
 * @author @author
 * 
 * @version 1.1.0
 * 
 * @date 2016-11-24 14:14:12
 * ==============================================================
 */
public interface IPropFeeDirectBillService {

	/**
	 * 用途 添加propFeeDirectBill（橙子生活）
	 * 
	 * @author
	 * @date创建时间 2016-11-24 14:14:12
	 * @param propFeeDirectBill
	 * @return
	 * @throws AppBizException
	 */
	public int addPropFeeDirectBill(PropFeeDirectBillDto propFeeDirectBill)
			throws AppBizException;

	public int addPropFeeDirectBills(PropFeeDirectBillDto propFeeDirectBill)
			throws AppBizException;

	/**
	 * 用途 修改propFeeDirectBill（橙子生活）
	 * 
	 * @author
	 * @date创建时间 2016-11-24 14:14:12
	 * @param propFeeDirectBill
	 * @return
	 * @throws AppBizException
	 */

	public int editPropFeeDirectBill(PropFeeDirectBillDto propFeeDirectBill)
			throws AppBizException;

	/**
	 * 用途 单个查询 （橙子生活）
	 * 
	 * @author
	 * @date创建时间 2016-11-24 14:14:12
	 * @param propFeeDirectBillID
	 * @return
	 * @throws AppBizException
	 */

	public PropFeeDirectBillDto findPropFeeDirectBillByID(
			String propFeeDirectBillID) throws AppBizException;

	/**
	 * 用途 逻辑删除（橙子生活）
	 * 
	 * @author
	 * @date创建时间 2016-11-24 14:14:12
	 * @param propFeeDirectBillID
	 * @return
	 * @throws AppBizException
	 */
	public int deletePropFeeDirectBillByLogic(String propFeeDirectBillID)
			throws AppBizException;

	/**
	 * 用途 查询列表 （橙子生活）
	 * 
	 * @author
	 * @date 创建时间 2016-11-24 14:14:12
	 * @param search
	 *            搜索内容
	 * @param tsCreate
	 *            创建时间
	 * @param pageNo
	 *            页码
	 * @param pageSize
	 *            页面大小
	 * @return
	 * @throws AppBizExceptionception
	 */
	public List<Map<String, Object>> findPropFeeDirectBillByPage(String isBack,
			String commID, String apartmentType, String apartmentNum,
			String receiptNum, String invoiceNum, String startTime,
			String endTime, String payTypes, String feeTypes, String tsCreate,
			String search, int pageNo, int pageSize) throws AppBizException;

	/**
	 * 用途 查询列表（返回对对象）（橙子生活）
	 * 
	 * @author
	 * @date 创建时间 2016-11-24 14:14:12
	 * @param servletRequest
	 * @param search
	 *            搜索内容
	 * @param tsCreate
	 *            创建时间
	 * @param pageNo
	 *            页码
	 * @param pageSize
	 *            页面大小
	 * @return
	 * @throws AppBizException
	 */
	public List<PropFeeDirectBillDto> getPropFeeDirectBillByPage(
			String tsCreate, String search, int pageNo, int pageSize)
			throws AppBizException;

	/**
	 * 用途 根据一张表内的所有ID查询propFeeDirectBill（橙子生活）(返回Map<String, Object>)
	 * 
	 * @author
	 * @date 创建时间 2016-11-24 14:14:12
	 * @param directBillID
	 *            (非必填字段)
	 * 
	 * @param commID
	 *            (非必填字段)
	 * 
	 * @param apartmentID
	 *            (非必填字段)
	 * 
	 * @param payType
	 *            (非必填字段)
	 * 
	 * @param status
	 *            (非必填字段)
	 * 
	 * @param payerID
	 *            (非必填字段)
	 * 
	 * @param receiverID
	 *            (非必填字段)
	 * @return
	 * @throws AppBizException
	 */

	public List<Map<String, Object>> selectPropFeeDirectBillByRelevantID(
			String directBillID, String commID, String apartmentID,
			String payType, String status, String payerID, String receiverID)
			throws AppBizException;

	/**
	 * 用途 根据一张表内的所有ID查询propFeeDirectBill（橙子生活）(返回对象)
	 * 
	 * @author
	 * @date 创建时间 2016-11-24 14:14:12
	 * @param directBillID
	 *            (非必填字段)
	 * 
	 * @param commID
	 *            (非必填字段)
	 * 
	 * @param apartmentID
	 *            (非必填字段)
	 * 
	 * @param payType
	 *            (非必填字段)
	 * 
	 * @param status
	 *            (非必填字段)
	 * 
	 * @param payerID
	 *            (非必填字段)
	 * 
	 * @param receiverID
	 *            (非必填字段)
	 * @return
	 * @throws AppBizException
	 */

	public List<PropFeeDirectBillDto> findPropFeeDirectBillByRelevantID(
			String directBillID, String commID, String apartmentID,
			String payType, String status, String payerID, String receiverID)
			throws AppBizException;

	/**
	 * 用途 批量查询propFeeDirectBill（橙子生活）(返回对象)
	 * 
	 * @author
	 * @date 创建时间 2016-11-24 14:14:12
	 * 
	 * @return
	 * @throws AppBizException
	 */

	public List<PropFeeDirectBillDto> bauthfindPropFeeDirectBill(
			List<String> propFeeDirectBillIDs) throws AppBizException;

	/**
	 * 用途 批量查询propFeeDirectBill（橙子生活）(返回Map)
	 * 
	 * @author
	 * @date 创建时间 2016-11-24 14:14:12
	 * 
	 * @return
	 * @throws AppBizException
	 */

	public List<Map<String, Object>> bauthfindPropFeeDirectBillByMap(
			Map<String, Object> propFeeDirectBill) throws AppBizException;

	/**
	 * 用途 清除
	 * 
	 * @author
	 * @date 创建时间 2016-11-24 14:14:12
	 * 
	 * @return
	 * @throws AppBizException
	 */

	public void clearCache() throws AppBizException;

	/***
	 * 退还业主
	 * 
	 * @param propFeeDirectBill
	 * @return
	 * @throws AppBizException
	 */
	public int returnBackBill(PropFeeDirectBillDto propFeeDirectBill)
			throws AppBizException;

	/***
	 * 转存
	 * 
	 * @param propFeeDirectBill
	 * @return
	 * @throws AppBizException
	 */

	public int turnAccountBill(PropFeeDirectBillDto propFeeDirectBill)
			throws AppBizException;

	public int sendInfoToEditFinal(PropFeeDirectBillDto propFeePreBill)
			throws AppBizException;

	/***
	 * 查询总金金额
	 * 
	 * @param commID
	 * @param apartmentType
	 * @param apartmentNum
	 * @param receiptNum
	 * @param invoiceNum
	 * @param startTime
	 * @param endTime
	 * @param payTypes
	 * @param feeTypes
	 * @param tsCreate
	 * @param billType
	 * @return
	 */
	public Map<String, Object> getTotalAmount(String commID,
			String apartmentType, String apartmentNum, String receiptNum,
			String invoiceNum, String startTime, String endTime,
			String payTypes, String feeTypes, String tsCreate, String billType);

	/***
	 * 同步其他费用到财务中心
	 * 
	 * @param parMap
	 * @return
	 * @throws AppBizException
	 */
	public List<Map<String, Object>> synchDirBillData(Map<String, Object> parMap)
			throws AppBizException;

	/***
	 * 查询撤销列表
	 * 
	 * @param parMap
	 * @param pageNo
	 * @param pageSize
	 * @return
	 * @throws AppBizException
	 */
	public List<Map<String, Object>> canclePropFeeDirectBill(
			Map<String, Object> parMap,

			int pageNo, int pageSize) throws AppBizException;

	public int revokePropFeeDirect(PropFeeDirectBillDto propFeeDirectBill)
			throws AppBizException;

}